﻿using QuanLyThuVien.BLL;
using QuanLyThuVien.DTO;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace QuanLyThuVien.GUI
{
    public partial class GUITK_TraSachTre : DevComponents.DotNetBar.Office2007Form
    {
        private BLLTK_TraSachTre _bllTKTraSachTre;
        private BLLPhieuMuon _bllPhieuMuon;
        private BLLCuonSach _bllCuonSach;
        private BLLQuyDinh _bllQuyDinh;

        private List<DTOTK_TraSachTre> _DSTKTraSachTre;
        private List<DTOCT_PhieuMuon> _DSPhieuMuonTraTre;
        private DateTime _NgayTK;

        //----------------------------------------------------------------------
        //Desc: constructor mặc định
        //----------------------------------------------------------------------
        public GUITK_TraSachTre()
        {
            InitializeComponent();

            _bllCuonSach = new BLLCuonSach();
            _bllTKTraSachTre = new BLLTK_TraSachTre();
            _bllPhieuMuon = new BLLPhieuMuon();
            _bllQuyDinh = new BLLQuyDinh();

            _DSTKTraSachTre = new List<DTOTK_TraSachTre>();
            _DSPhieuMuonTraTre = new List<DTOCT_PhieuMuon>();
            _NgayTK = new DateTime();

            object obj = _bllQuyDinh.LayNgayLapThuVien();
            DateTime ngaylapthuvien = new DateTime();
            if (obj != null)
            {
                try
                {
                    ngaylapthuvien = (DateTime)obj;
                }
                catch { }
            }
            if (obj != null)
                _dtNgay.MinDate = ngaylapthuvien;
            _dtNgay.MaxDate = DateTime.Today;
        }

        //----------------------------------------------------------------------
        //Desc: lấy dữ kiệu
        //----------------------------------------------------------------------
        public bool LayDuLieuForm()
        {
            try
            {
                _NgayTK = _dtNgay.Value;
            }
            catch
            {
                MessageBox.Show("Ngày thống kê sai");
                return false;
            }

            object obj = _bllQuyDinh.LayNgayLapThuVien();
            DateTime ngaylapthuvien = new DateTime();
            if (obj != null)
            {
                try
                {
                    ngaylapthuvien = (DateTime)obj;
                }
                catch { }
            }
            if (obj != null && _NgayTK < ngaylapthuvien)               //ngày lập tv
            {
                MessageBox.Show("Không có dữ liệu");
                return false;
            }

            DateTime ngayhientai = DateTime.Today;
            if (_NgayTK > ngayhientai)
            {
                MessageBox.Show("Chưa có dữ liệu");
                return false;
            }
            else
                return true; 
        }

        ///----------------------------------------------------------------------
        //Desc: hiển thị lên datagridview
        //----------------------------------------------------------------------
        public void HienThiLenDataGridView()
        {
            if (_DSTKTraSachTre.Count == 0)
                MessageBox.Show("Không có sách trả trễ");
            else
            {
                for (int i = 0; i < _DSTKTraSachTre.Count; i++)
                {
                    string tensach = _bllCuonSach.LayTenDauSach(_DSTKTraSachTre[i].MaCuonSach);
                    if (tensach == null)
                        tensach = "";
                    _dgwThongTinTK.Rows.Add(tensach, _DSTKTraSachTre[i].NgayMuon.ToString(),
                        _DSTKTraSachTre[i].SoNgayTraTre.ToString());
                }
            }
        }

        //----------------------------------------------------------------------
        //Desc: xóa tất cả thông tin thống kê
        //----------------------------------------------------------------------
        public void XoaTatCa()
        {
            try
            {
                _dgwThongTinTK.Rows.Clear();
            }
            catch { }
            if (_DSPhieuMuonTraTre != null)
                _DSPhieuMuonTraTre.Clear();
            if (_DSTKTraSachTre != null)
                _DSTKTraSachTre.Clear();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button Thoat
        //----------------------------------------------------------------------
        private void _btnThoat_Click(object sender, EventArgs e)
        {
            Close();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện form load
        //----------------------------------------------------------------------
        private void FormTKSachTraTre_Load(object sender, EventArgs e)
        {
            _dtNgay.Value = DateTime.Today;
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button ThongKe
        //----------------------------------------------------------------------
        private void _btnThongKe_Click(object sender, EventArgs e)
        {
            XoaTatCa();
            if (LayDuLieuForm())
            { 
                int kiemtra = _bllTKTraSachTre.KiemTraTonTai(_NgayTK);
                if (kiemtra < 0)
                    MessageBox.Show("Không lấy được dữ liệu thống kê");
                else if (kiemtra > 0)
                { 
                    //lấy dữ liệu thống kê
                    _DSTKTraSachTre = _bllTKTraSachTre.LayDuLieuThongKe(_NgayTK);
                    if (_DSTKTraSachTre == null)
                        MessageBox.Show("Không lấy được dữ liệu thống kê");
                    else
                        HienThiLenDataGridView();
                }
                else
                { 
                    //thống kê
                    _DSPhieuMuonTraTre = _bllPhieuMuon.LayDSSachTraTre(_NgayTK);
                    for (int i = 0; i < _DSPhieuMuonTraTre.Count; i++)
                    {
                        DTOTK_TraSachTre tksachtratre = _bllTKTraSachTre.LayTTSachTraTre(_DSPhieuMuonTraTre[i], _NgayTK);
                        if (tksachtratre != null)
                            _DSTKTraSachTre.Add(tksachtratre);
                    }

                    HienThiLenDataGridView();
                    //lưu lại
                    int count = _bllTKTraSachTre.InsertList(_DSTKTraSachTre);
                }
            }

            
        }
    }
}
